01-최소권한원칙
최소권한원칙
목표
IAM의 최소권한 원칙을 이해하고, 현재 실습 환경에 세분화된 권한 정책을 적용하여 보안을 강화해봅시다.
최소권한 원칙이란?
기본 개념
최소권한 원칙 (Principle of Least Privilege):
- 사용자/역할이 업무 수행에 필요한 최소한의 권한만 부여
- 불필요한 권한 제거로 보안 위험 최소화
- 권한 오남용 방지
현재 상황 분석
일반적인 문제:
개발자 계정 → AdministratorAccess 정책
- EC2, RDS, IAM 등 모든 서비스 전체 권한
- 실수로 중요한 리소스 삭제 가능
- 보안 사고 시 피해 범위 최대화
최적화 목표:
개발자 계정 → 역할별 세분화 권한
- 웹 개발자: EC2, RDS 읽기 + 제한적 쓰기
- 인프라 담당자: EC2, VPC 관리
- 모니터링 담당자: CloudWatch 읽기 전용
현재 권한 상황 분석
사용 중인 IAM 요소 확인
IAM 콘솔에서 확인:
- IAM → 사용자 → 현재 사용자 확인
- 연결된 정책 탭에서 현재 권한 확인
- 권한 탭에서 세부 권한 분석
일반적인 AWS Academy 권한:
- LabRole (매우 광범위한 권한)
- CloudFormation, EC2, RDS, VPC 등 대부분 서비스 접근
실제 필요한 권한 분석
Week 3.5 실습을 위해 사용한 권한:
- EC2: 인스턴스 생성, 중지, 시작, 보안그룹 수정
- RDS: 인스턴스 생성, 수정, 백업
- ELB: ALB 생성, 수정, Target Group 관리
- Auto Scaling: ASG, Launch Template 관리
- CloudWatch: 메트릭 조회, 알람 생성
- Cost Explorer: 비용 정보 조회
역할 기반 권한 설계
웹 개발자 역할
필요한 권한:
- EC2 인스턴스 조회, 시작/중지 (생성/삭제 제외)
- RDS 연결 정보 조회
- CloudWatch 로그 조회
- S3 애플리케이션 파일 업로드
정책 예시:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Project": "webapp"
}
}
},
{
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:GetLogEvents"
],
"Resource": "*"
}
]
}
인프라 담당자 역할
필요한 권한:
- EC2 전체 관리 (생성, 수정, 삭제)
- 네트워크 구성 (VPC, 서브넷, 보안그룹)
- Auto Scaling 관리
- 로드밸런서 관리
모니터링 담당자 역할
필요한 권한:
- CloudWatch 전체 조회
- 비용 정보 조회
- 알람 생성/수정
실습: 제한된 권한 사용자 생성
1단계: 모니터링 전용 사용자 생성
IAM 사용자 생성:
- IAM → 사용자 → 사용자 생성
- 사용자 이름:
webapp-monitor - AWS Management Console 액세스: 체크
- 사용자 지정 암호: 설정
2단계: 커스텀 정책 생성
CloudWatch 읽기 전용 정책:
- IAM → 정책 → 정책 생성
- JSON 탭 선택
- 다음 정책 입력:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:Get*",
"cloudwatch:List*",
"cloudwatch:Describe*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeRegions",
"ec2:DescribeAvailabilityZones"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"elasticloadbalancing:Describe*"
],
"Resource": "*"
}
]
}
- 정책 이름:
WebApp-Monitoring-ReadOnly - 정책 생성
3단계: 사용자에게 정책 연결
정책 연결:
- 사용자 →
webapp-monitor선택 - 권한 추가 → 정책 직접 연결
WebApp-Monitoring-ReadOnly선택- 권한 추가
4단계: 제한된 권한 테스트
새 사용자로 로그인:
- AWS 콘솔 로그아웃
webapp-monitor계정으로 로그인- CloudWatch 접근 → 정상 동작 확인
- EC2 접근 → 조회만 가능, 수정 불가 확인
리소스 기반 권한 제어
태그 기반 접근 제어
리소스 태깅 전략:
태그 키: Project, 값: webapp
태그 키: Environment, 값: prod/dev/test
태그 키: Owner, 값: team-name
태그 기반 정책 예시:
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Project": "webapp",
"ec2:ResourceTag/Environment": "dev"
}
}
}
시간 기반 접근 제어
업무 시간에만 접근 허용:
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"DateGreaterThan": {
"aws:RequestedRegion": "09:00Z"
},
"DateLessThan": {
"aws:RequestedRegion": "18:00Z"
}
}
}
권한 모니터링 및 감사
CloudTrail을 통한 권한 사용 추적
CloudTrail 이벤트 확인:
- CloudTrail → 이벤트 기록
- 사용자 이름 필터로 특정 사용자 활동 추적
- API 호출 패턴 분석
주요 확인사항:
- 실패한 API 호출 (권한 부족)
- 비정상적인 활동 패턴
- 권한 상승 시도
Access Analyzer 활용
IAM Access Analyzer:
- IAM → Access Analyzer
- 외부 접근 가능한 리소스 확인
- 권한 사용 분석 검토
권한 최적화 프로세스
1단계: 현재 권한 감사
권한 사용 패턴 분석:
# CloudTrail 로그 분석 (개념)
aws logs filter-log-events \
--log-group-name CloudTrail/logs \
--filter-pattern "{ $.userIdentity.userName = 'target-user' }"
2단계: 불필요한 권한 식별
90일간 사용하지 않은 권한:
- IAM Console의 Service Last Accessed 정보 활용
- 사용하지 않은 서비스 권한 제거
3단계: 단계적 권한 축소
안전한 권한 축소 절차:
- 모니터링 기간: 새 정책으로 2주간 시뮬레이션
- 테스트 환경: 제한된 환경에서 먼저 적용
- 점진적 적용: 사용자별/팀별 순차 적용
- 롤백 계획: 문제 발생 시 즉시 복구
보안 모범 사례
MFA (Multi-Factor Authentication) 적용
MFA 설정:
- IAM → 사용자 → 보안 자격 증명
- 멀티 팩터 인증 → MFA 디바이스 할당
- 가상 MFA 디바이스 선택 (Google Authenticator 등)
권한 정기 검토
월별 검토사항:
- 신규 사용자 권한 적절성 검토
- 장기 미사용 권한 제거
- 과도한 권한 탐지 및 조정
비상 접근 계정 관리
Break-glass 계정:
- 비상시에만 사용하는 관리자 계정
- 강력한 MFA 및 모니터링 적용
- 사용 시 즉시 알림 및 감사
완료 체크리스트
권한 분석 및 설계
실습 구현
보안 강화
운영 프로세스
문제 해결
권한 부족 오류 발생 시
즉시 확인사항:
- CloudTrail에서 실패한 API 호출 확인
- 필요한 최소 권한 식별
- 임시 권한 부여 후 정책 수정
과도한 권한 발견 시
대응 절차:
- 해당 권한의 실제 사용 여부 확인
- 대체 가능한 최소 권한 탐색
- 단계적 권한 축소 적용
최소권한원칙 적용 완료
축하합니다! IAM 최소권한 원칙을 이해하고 실제 적용해보았습니다. 이제 보안 강화와 함께 운영 효율성도 향상되었습니다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/03-IAM-정책심화/02-IAM-역할과정책심화에서 더 고급 IAM 기능을 학습해보겠습니다.
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/README, AWS EDU/Archive/조선대학교 AWS 멘토링/Week4-Operations-and-Optimization/03-IAM-정책심화/02-IAM-역할과정책심화